package com.library_manager.severlet.user;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//以上引进的包 是在创建项目的时候  D...web.project的时候一定要选择 第一个可选项 并且选择 tamcat 时候自己引进的包
import com.library_manager.uers.User;
import com.libray_manager.dao.UserDao;
//有注释  不明白看看
/**
 * 用户登录Servlet类
 * 
 * @author getan
 * 
 */
public class RegisterServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	// 用户Dao对象
	UserDao dao = null;

	/**
	 * 初始化方法
	 * 
	 * 将初始化dao对象的操作放入init()方法,可保证dao只被创建一次
	 */
	@Override
	public void init() throws ServletException {
		// 初始化用户Dao对象
		dao = new UserDao();
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {

		doPost(request, response);

	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		// 设置请求编码集为utf-8(避免中文乱码)
		request.setCharacterEncoding("utf-8");
		
		
		System.out.println("测试："+request.getParameter("email"));
		// 创建用户数据视图对象(用于封装新增用户信息的数据)
		User userParams = new User();

		// 从页面获取新增数据  其中的 nickname  是页面的Id
		userParams.setUsername(request.getParameter("username"));
		userParams.setPassword(request.getParameter("password"));
		userParams.setUsernumber(request.getParameter("usernumber"));
		userParams.setProfession(request.getParameter("profession"));
		userParams.setEmail(request.getParameter("email"));
		try {
			// 调用dao中的新增用户信息方法
			dao.insertUser(userParams);
			
			// 将新增结果保存到request对象中(该提示信息会显示在JSP页面中的 <div id='msgs'>${messages}</div>处)
			request.setAttribute("messages", "用户注册成功!");
			
			// 调用查询用户列表的Servlet,再次显示新增该用户后的用户信息列表
			RequestDispatcher rd = getServletContext().getRequestDispatcher("/jsp/login.jsp");
			// 请求转发给用户信息列表Servlet(/userQuery)      注意：其实userQuery 应该是在配置在XML中的一个准备跳转的Servlet 可以考虑看看老谭的studentQuery
			//getServletContext（）    一个servlet可以使用getServletContext（）方法得到web应用的servletContext 即而使用getServletContext的一些方法来获得一些值 比如说getServletContext().getRealPath("/")来获得系统绝对路径 getServletContext().getResource("WEB-INF/config.xml")来获得xml文件的内容。
			//request.getRequestDispatcher(url).forward(request,response)是直接将请求转发到指定URL，所以该请求 
			//能够直接获得上一个请求的数据，也就是说采用请求转发，request对象始终存在，不会重新创建。而 
			//sendRedirect()会新建request对象，所以上一个request中的数据会丢失。 

			rd.forward(request, response);
			
		} catch (Exception e) {
			// 控制台输出异常信息
			e.printStackTrace();
			
			// 将新增结果保存到request对象中(该提示信息会显示在JSP页面中的 <div id='msgs'>${messages}</div>处)
			request.setAttribute("messages", "用户注册失败!");
			
			// 调用查询用户列表的Servlet,再次显示新增该用户后的用户信息列表
			RequestDispatcher rd = getServletContext().getRequestDispatcher("/jsp/registe.jsp");
			// 请求转发给用户信息列表Servlet(/userQuery)
			rd.forward(request, response);
		}
	}
}
